草庐IT

SQL EXISTS 运算符

全部标签

c++ - 为优先级队列重载运算符<

我正在尝试为我制作的类创建一个优先级队列-std::priority_queuenodes;我像这样重载了Position中的boolPosition::operator但是,每当我尝试编译时,我都会收到此错误消息,提示error:nomatchfor‘operator我在这里错过了什么?感谢您的帮助。 最佳答案 关系运算符不应更改操作数。尝试:boolPosition::operator我的猜测是__x或__y(或两者)都是const。如果__x是const,则不能调用非常量成员函数,也不能将__y作为传递right参数,如果__

c++ - 为什么我不能在运算符重载中使用两个指针?

这很烦人,我可以用这些参数/返回值编写一个函数,但为什么我不能定义一个运算符来执行此操作?-edit-我实际上是在尝试重载以下仅供引用。Frommsdn//C2803.cpp//compilewith:/cclassA{};booloperatorgcc错误error:‘booloperator 最佳答案 因为每个用户定义的运算符重载都需要至少一个用户定义的类型作为参数。点不是用户定义的类型。C++03标准,§13.5[over.oper]p6:Anoperatorfunctionshalleitherbeanon-staticme

c++ - C++中auto_ptr的指针运算

我正在阅读C++STL中auto_ptr的实现。我看到像->和*这样的指针上通常需要的操作被重载了,因此它们保留了相同的含义。但是,指针运算是否适用于自动指针?假设我有一个自动指针数组,我希望能够执行类似array+1的操作,并希望获得数组第二个元素的地址。我如何获得它?我对这个要求没有任何实际应用,只是出于好奇。 最佳答案 auto_ptr只能指向单个元素,因为它使用delete(而不是delete[])来删除它的指针。所以这里没有用到指针运算。如果您需要一个对象数组,通常的建议是改用std::vector。

c++ - C++中的两个运算符同时重载

我想像数组一样表示我的对象。我的意思是程序员可以在他的代码中写我的对象[3]=2在后面(在myobject代码中)根本没有数组,它只是表示。所以我需要同时重载[]和=。如何做到这一点?谢谢你抱歉我的英语不好。 最佳答案 operator[]应该返回对您尝试修改的对象的引用。它可能是某种元对象,重载operator=以对主对象做任何您想做的事情。编辑:由于OP澄清了问题,有一种方法可以做到这一点。看这里:#include#includeint&func(std::vector&a){returna[3];}intmain(){std:

c++ - 清除 std::vector 需要赋值运算符。为什么?

在我的应用程序中,我需要存储一小部分临时数据。在这个临时数据中,我想存储对另一个类的引用,因为它不能是nullptr,所以我使用了一个引用。使用vector来存储数据(我没有太多数据,所以vector很好)。填充vector并对其进行迭代工作正常,但清除vector似乎会产生问题。这是一些显示问题的简化代码:classDepartment{};classPerson{public:Person(constDepartment&dept):m_dept(dept),m_salary(1000){}private:constDepartment&m_dept;doublem_salary;

c++ - istream 提取运算符 : how to detect parse failure?

如何检测istream提取是否像这样失败?strings("x");stringstreamss(s);inti;ss>>std::ios::hex>>i;编辑——虽然问题标题涵盖了这一点,但我忘了在正文中提到:我真的想检测失败是由于格式不正确造成的,即解析,还是由于任何其他与IO相关的问题,以便提供适当的反馈(一个malformed_exception("x")或其他)。 最佳答案 if(!(ss>>std::ios::hex>>i)){std::cerr就这么简单。预计到达时间:这是一个示例,说明此测试如何与流的末尾交互。int

c++ - 操纵器的运算符重载

我认为下面的代码可以用来创建操纵器。#includeostream&symbol(ostream&output){returnoutput它工作正常。以下声明cout给出输出Totalamount:567Rs但我不明白为什么它会起作用。我有以下有关C++中运算符重载的信息。只能重载现有的运算符。无法创建新的运算符(operator)。但是symbol不是现有的运算符。语句(cout)中,好像是重载运算符symbol是一个变量/对象。但我没有将symbol声明为变量/对象。他们为什么使用返回语句(返回输出)?我认为(return"\tRs";)或(output)应该可以工作。(我试过但没

c++ - boost shared_ptr 运算符 =

这里是代码示例classA{inti;public:A(inti):i(i){}voidf(){prn(i);}};intmain(){A*pi=newA(9);A*pi2=newA(87);boost::shared_ptrspi(pi);boost::shared_ptrspi2(pi2);spi=spi2;spi->f();spi2->f();pi->f();pi2->f();}输出:8787087问题是为什么输出中是0?文档注释:效果:等同于shared_ptr(r).swap(*this)。但是如果shared_ptr对象刚刚交换,结果应该是9。如果第一个对象被删除,应该有S

c++ - 浮点运算结果的再现性

浮点算术运算是否可能在不同的CPU上产生不同的结果?我所说的CPU是指所有x86和x64。不同的结果我的意思是即使只有一个最不重要的位是不同的。我需要知道我是否可以在项目上使用浮点运算,在不同机器上具有对应于相同输入的完全相同的结果是至关重要的。编辑:添加了c++标签。还要澄清一下:我需要可重现的运行时结果。我不希望不同的编译结果相同。 最佳答案 在游戏行业中,这被称为确定性锁步,对于客户端和服务器需要就物理对象(玩家)的状态达成一致的实时网络游戏非常重要、射弹、可变形地形等)。根据GlennFiedler关于FloatingPoi

c++ - GCC 会为运行时保留固定值的算术运算还是编译输出?

我想知道GCC是否会将具有固定值的算术保留在运行时执行,或者是否会将其设置为它的答案,例如。constfloathalfPi=M_PI/2;它会“归结”方程并设置constfloathalfPi=1.57079;还是将算法留给运行时? 最佳答案 嗯...如果我们谈论积分,答案将是明确的是(在通用术语ConstantFolding).即使冗长的计算也可以在编译时完成……这实际上是模板非类型参数评估和(现在)constexpr变量所必需的。在浮点表示的情况下,一旦计算变得更复杂,事情就会变得有点复杂。问题在于,不同大小(以及精度)的浮点